package com.ht.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ht.entity.DictModel;
import com.ht.entity.DictModelMany;
import com.ht.modules.system.entity.SysDict;
import com.ht.modules.system.model.DuplicateCheckVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 字典表 Mapper 接口
 */
public interface SysDictMapper extends BaseMapper<SysDict> {

    /**
     * 重复检查SQL
     */
    Long duplicateCheckCountSql(DuplicateCheckVo duplicateCheckVo);

    Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo);

    /**
     * 重复检查SQL（增加del_flag判断）
     */
    Long duplicateCheckCountSqlNew(DuplicateCheckVo duplicateCheckVo);

    Long duplicateCheckCountSqlNoDataIdNew(DuplicateCheckVo duplicateCheckVo);

    List<DictModel> queryDictItemsByCode(@Param("code") String code);

    List<DictModel> queryTableDictItemsByCode(@Param("table") String table, @Param("text") String text, @Param("code") String code);


    String queryDictTextByKey(@Param("code") String code, @Param("key") String key);

    String queryTableDictTextByKey(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("key") String key);


    /**
     * 查询所有部门 作为字典信息 id -->value,departName -->text
     */
    List<DictModel> queryAllDepartBackDictModel();

    /**
     * 查询所有用户  作为字典信息 username -->value,realname -->text
     */
    List<DictModel> queryAllUserBackDictModel();

    /**
     * 通过关键字查询出字典表
     */
    List<DictModel> queryTableDictItems(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("keyword") String keyword);

    List<Map> getCommonList(@Param("table") String table, @Param("columns") String columns, @Param("whereSql") String whereSql, @Param("joinSql") String joinSql);

    /**
     * 可通过多个字典code查询翻译文本
     */
    List<DictModelMany> queryManyDictByKeys(@Param("dictCodeList") List<String> dictCodeList, @Param("keys") List<String> keys);

    /**
     * 通过查询指定table的 text code key 获取字典值，可批量查询
     */
    @Deprecated
    List<DictModel> queryTableDictTextByKeys(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("keys") List<String> keys);

}
